/*
* Author: Chris Seguin
*
* This software has been developed under the copyleft
* rules of the GNU General Public License. Please
* consult the GNU General Public License for more
* details about use and distribution of this software.
*/
package org.acm.seguin.ide.jbuilder.refactor;
import org.acm.seguin.refactor.RefactoringFactory;
import org.acm.seguin.refactor.type.MoveClass;
import org.acm.seguin.refactor.type.RemoveEmptyClassRefactoring;
import org.acm.seguin.refactor.type.RenameClassRefactoring;
/**
* Creates refactorings specific to JBuilder. The refactorings make sure to
* close out existing files before the refactoring is performed.
*
*@author Chris Seguin
*/
public class JBuilderRefactoringFactory extends RefactoringFactory {
/**
* Constructor for the JBuilderRefactoringFactory object
*/
protected JBuilderRefactoringFactory()
{
super();
}
/**
* Creates a move class refactoring object
*
*@return the move class refactoring object
*/
public MoveClass moveClass()
{
prepare();
return new JBuilderMoveClassRefactoring();
}
/**
* Description of the Method
*
*@return Description of the Returned Value
*/
public RenameClassRefactoring renameClass()
{
prepare();
return new JBuilderRenameClassRefactoring();
}
/**
* Description of the Method
*
*@return Description of the Returned Value
*/
public RemoveEmptyClassRefactoring removeEmptyClass()
{
prepare();
return new JBuilderRemoveEmptyClassRefactoring();
}
/**
* We use this as an opportunity to save all the files in the system before
* we perform the refactorings.
*/
protected void prepare()
{
Browser.getActiveBrowser().doSaveAll(true);
}
/**
* Register this as the factory
*/
public static void register()
{
RefactoringFactory.setSingleton(new JBuilderRefactoringFactory());
}
}